package org.jeecg.modules.wms.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 余料入库单自动生成配置
 * 
 * @author system
 * @date 2024-01-01
 */
@Data
@Component
@ConfigurationProperties(prefix = "wms.surplus.inbound")
public class SurplusInboundConfig {
    
    /**
     * 是否启用自动余料入库单生成功能
     * 默认启用
     */
    private boolean enabled = true;
    
    /**
     * 是否启用异步处理
     * 默认关闭，同步处理确保事务一致性
     */
    private boolean asyncEnabled = false;
    
    /**
     * 余料入库单生成失败时是否阻止出库完成
     * 默认false，不阻止出库完成，只记录错误日志
     */
    private boolean blockOutboundOnFailure = false;
    
    /**
     * 余料下限过滤失败时的处理策略
     * strict: 严格模式，过滤失败则抛出异常
     * lenient: 宽松模式，过滤失败则返回原始列表
     */
    private String filterFailureStrategy = "lenient";
    
    /**
     * 库位分配失败时的处理策略
     * strict: 严格模式，分配失败则抛出异常
     * lenient: 宽松模式，分配失败则跳过该余料
     */
    private String allocationFailureStrategy = "lenient";
    
    /**
     * 最大重试次数
     */
    private int maxRetryCount = 3;
    
    /**
     * 重试间隔（毫秒）
     */
    private long retryIntervalMs = 1000;
}
